<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>判断质数</title>
  </head>
  <body>
    <script type="text/javascript">
      /* function isPrime(num) {
        for (let i = 2; i < num - 1; i++) {
          if (num % i == 0) {
            return false
          }
        }
        return true
      } */
      
      
      /* 对于每个数n，其实并不需要从2判断到n-1
      一个数若可以进行因数分解，那么分解时得到的两个数一定是一个小于等于sqrt(n)，一个大于等于sqrt(n).
      比如16可以被分别. 那么是2*8, 2小于sqrt(16), 也就是4, 8大于4. 而4*4都是等于sqrt(n)
      所以其实我们遍历到等于sqrt(n)即可 */
      
      function isPrime(num) {
        let temp = parseInt(Math.sqrt(num))
        for (let i = 2; i <= temp; i++) {
          if (num % i == 0) {
            return false
          }
        }
        return true
      }
      
      console.log(isPrime(11))
      console.log(isPrime(12))
      console.log(isPrime(3))
      console.log(isPrime(31))
    </script>
  </body>
</html>
